class code1 {

    //队列的参数类型只能是一个

    LinkedList<int[]> q1;
    LinkedList<int[]> q2;

    public AnimalShelf() {
        q1 = new LinkedList<>();//猫
        q2 = new LinkedList<>();//狗
    }

    public void enqueue(int[] animal) {
        if(animal[1] == 0) {
            //猫
            q1.addLast(animal);
        } else {
            //狗
            q2.addLast(animal);
        }
    }

    //这里存在先后顺序
    public int[] dequeueAny() {
        if(q1.isEmpty() && q2.isEmpty()) {
            return new int[]{-1,-1};
        }
        if(!q1.isEmpty() && q2.isEmpty()) {
            return q1.removeFirst();
        }

        if(q1.isEmpty() && !q2.isEmpty()) {
            return q2.removeFirst();
        }

        int[] cat = q1.getFirst();
        int[] dog = q2.getFirst();

        if(cat[0] <= dog[0]) {
            return q1.removeFirst();
        } else {
            return q2.removeFirst();
        }

    }

    public int[] dequeueDog() {
        if(q2.isEmpty()) {
            return new int[]{-1,-1};
        }
        return q2.removeFirst();
    }

    public int[] dequeueCat() {
        if(q1.isEmpty()) {
            return new int[]{-1,-1};
        }
        return q1.removeFirst();
    }
}

/**
 * Your AnimalShelf object will be instantiated and called as such:
 * AnimalShelf obj = new AnimalShelf();
 * obj.enqueue(animal);
 * int[] param_2 = obj.dequeueAny();
 * int[] param_3 = obj.dequeueDog();
 * int[] param_4 = obj.dequeueCat();
 */